<?php
/*
 * [JINYUN!] (C)2001-2099 Jinyunweb.com
 * This is NOT a freeware, use is subject to license terms
 * $Id: 2017-12-13 03:39:35 apple $
*/
/*
	小程序粉丝管理
*/
defined('BY_JYA') or exit('error');
$merchid=$this->checklogin();
$_RQ['op']=$_RQ['op']?$_RQ['op']:'list';
$return['autosets']=array('0'=>'进入输入框','1'=>'自动发送');
$return['types']=array('0'=>'网页客服','1'=>'QQ客服','2'=>'移动客服','3'=>'座机客服','4'=>'微信客服','5'=>'小程序客服','6'=>'支付宝客服','7'=>'机器人客服','8'=>'企业微信客服','9'=>'微信对话能力');
if($_RQ['op']=='list'){
	$jy_kefu = $this->plugin_exists('jy_kefu');
	if(!$jy_kefu){
		exi('请联系管理员安装《全网客服》插件！','error');	
	}
	//搜索
	$params=array('uniacid'=>$_SESSION['uniacid'],'plugin'=>'jy_merch','pid'=>$merchid);
	if($_RQ['name']){
		$params['name like']='%'.trim($_RQ['name']).'%';
		$return['params']['name']=$_RQ['name'];
	}
	
	$pindex = max(1, intval($_RQ['page']));
	$psize = 15;
	$total='';
	$list=pdo_getslice('jy_kefus',$params,array($pindex,$psize),$total,$fields,'','paixu desc');
	if($list){
		foreach($list as &$row){
			if($row['type']==0){
				$row['keyword']='无需关键字';
				$row['linkurl']=custom_url('jy_kefu/chat//getmid='.$row['mid'],true);
			}elseif($row['type']==1){
				$row['keyword']='无需关键字';
				$row['linkurl']='http://wpa.qq.com/msgrd?v=3&uin='.$row['number'].'&site=qq&menu=yes';
			}elseif($row['type']==2 || $row['type']==3){
				$row['linkurl']='tel:'.$row['number'];
				$row['keyword']='无需关键字';
			}elseif($row['type']==4 || $row['type']==5){
				if($row['qrticket']){
					$qrurl=pdo_get('core_qr',array('ticket'=>$row['qrticket']));
					$row['linkurl']=$qrurl['url'];
				}else{
					$row['linkurl']='关键字：客服:'.$row['name'].'@'.$_SESSION['uniacid'];
				}
					$row['keyword']='客服:'.$row['name'].'@'.$_SESSION['uniacid'];
			}elseif($row['type']==7){
				$row['linkurl']=custom_url('jy_kefu/chat//kfid='.$row['id'],true);
				$row['keyword']='无需关键字';
			}else{
				$row['linkurl']=custom_url('jy_kefu/chat//getmid='.$row['mid'],true);
				$row['keyword']='无需关键字';
			}
		}
	}
	$return['list'] =$list;
	$totalpage=ceil($total/$psize);
	$totalpage=intval($totalpage);
	$return['totalpage'] =$totalpage;
	$return['params']['page'] =$pindex;
	$htmls=array(
		'type'=>'list',
		'tabs'=>array(
			'0'=>array('op'=>'list','title'=>'客服列表'),
		),
		'list'=>array('data'=>'list','tip'=>'<red>如果是打包小程序环境下，将不显示小程序客服，只有原生态小程序才支持！</red>如果是：微信客服，小程序客服，复制‘关键字’，添加到自定义菜单！例如：菜单名称：在线客服，菜单动作：触发关键词，内容：客服:qidian@8；小程序客服：需要管理公众号！</br><red>公众号的消息提醒，是有时间间隔的，一般间隔5分钟，后台可以自由设置间隔时间；不是客户每次有消息就提醒的，不然很容易被封了</red></br><red>公众号消息提醒消息提醒要注意几点：1、如果是客服消息，要关注公众号才能收到，而且要是48小时内有触发关键词互动；2、如果设置的是微信公众号模板消息，就没有这个限制（但由于模板消息，经常被其他客户恶意使用，模板的ID很可能会失效）；3、无论那种公众号消息提醒消息，都是有时间间隔的，比如5分钟提醒一次，并不是客户每发个消息，公众号那边就会提醒。这样公众号消息提醒就用的太泛滥了！很容易被封ID。</red></br>【注意】：正常客服对话框页面，消息是时时刷新，只要有客户发信息，马上能收到！','list'=>array(
			array('name'=>'id','title'=>'ID','type'=>'string'),
			array('name'=>'nickname','title'=>'客服名称','type'=>'string'),
			array('name'=>'picurl','title'=>'客服头像','type'=>'image'),
			array('name'=>'type','title'=>'客服类别','type'=>'radio','options'=>'types'),
			array('name'=>'linkurl','title'=>'客服二维码','type'=>'ewm'),
			array('name'=>'linkurl','title'=>'客服链接','type'=>'copy'),
			array('name'=>'keyword','title'=>'触发关键字','type'=>'string'),
			array('name'=>'isshow','title'=>'是否显示','type'=>'switch','set'=>'set'),
		),'action'=>array(
			array('type'=>'modal','op'=>'inviteworker','title'=>'邀请客服绑定','show'=>array('type'=>4)),
			array('type'=>'modal','op'=>'invitewxapp','title'=>'邀请客服绑定','show'=>array('type'=>5)),
			array('type'=>'href','op'=>'loginmpkf','title'=>'登录微信客服','show'=>array('type'=>array(4,5))),
			)
		),
		'search_one'=>array('name'=>'name','add_op'=>'edit')
		
	);
	$return['htmls']=$htmls;
	exi($return);
}
if($_RQ['op']=='edit'){
	$id=intval($_RQ['id']);
	if($id){
		$item=pdo_get('jy_kefus',array('uniacid'=>$_SESSION['uniacid'],'id'=>$id));
		$read=true;
	}else{
		$item=array();
		$read=false;
	}
	$item['worker']=json_decode($item['worker'],true);
	$return['groups']=pdo_getall('jy_kefu_group',array('uniacid'=>$_SESSION['uniacid']),array('id','name'));
	$return['wxapps']=pdo_getall('core_account_wxapp',array('uniacid'=>$_SESSION['uniacid']),array('id','title'));
	$item['onlinetime']=$item['onlinetime'] ? json_decode($item['onlinetime'],true) : '';
	$return['item']=$item;
	$htmls=array(
		'type'=>'edit',
		'post'=>'post',
		'desc'=>'客服详情',
		'edit_tab'=>true,
		'tabs'=>array(
			array('op'=>'list','title'=>'客服列表'),
			array('op'=>'edit','title'=>'客服详情'),
		),
		'edits'=>array(
			'0'=>array(
					'title'=>'基础设置',
					'list'=>array(
						array('type'=>'tip','title'=>'【<red>温馨提示</red>】：1、如果是微信客服，必须微信扫码登录在线才行，否则提示指定客服不在线；</br>2、微信客服必须前往微信官网，开启微信公众号客服功能。开启后不会马上生效，需等待一段时间；</br>3、企业微信可以，可以直接移动端，电脑端在线沟通，但是仅限小程序端使用（点击联系客服），在H5端，只能弹窗企业微信二维码；</br>4、企业微信小程序：A、前往企业微信--客服联系--配置--【联系我】-设置--新建联系方式（在小程序联系）--复制配置ID；B、必须添加插件：在小程序后台 - 设置 - 第三方服务 - 添加插件中 搜索ID: wx104a1a20c3f81ec2' ),
						array('type'=>'string','title'=>'客服名称','name'=>'nickname', 'help'=>'' ),
						array('type'=>'string','title'=>'客服账号','name'=>'name', 'help'=>'只允许英文字母！','read'=>$read,'show'=>array('type <>'=>7)),
						array('type'=>'image','title'=>'客服头像','name'=>'picurl', 'help'=>'' ),
						array('type'=>'select','title'=>'所属客服组','name'=>'groupid','help'=>'','options'=>'groups','option_title'=>'name'),
						array('type'=>'tip','title'=>'【温馨提示】：网页版，QQ客服，移动客服等不会在小程序端显示' ),
						array('type'=>'radio','title'=>'客服类型','name'=>'type' , 'help'=>'<red>如果是打包小程序环境下，不能使用小程序客服，只有原生态小程序才支持！</red>如果是小程序客服：必须先去微信官方开启客服功能，并添加客服；添加后，客服员工，请搜索《<red>客服小助手</red>》小程序，然后进入接收信息！</br>【<red>小程序客服收不到消息</red>】？移步：小程序官方后台--开发--开发设置--消息推送（关闭掉就可以了）
						</br>【<red>选择微信客服，弹出的是二维码</red>】？选择微信客服（微信公众号--广告与服务--客服），保存的时候，会生成一个《微信客服》的传参二维码，然后扫码进入微信公众号，然后在公众号里面直接打字跟客服对话聊天的！（注意，如果微信公众号官方没设置好，可能会生成异常）！
						</br>【<red>企业微信客服收到不消息？</red>】：企业微信后台--应用管理--应用--《微信客服》--客服帐号，选择一个账号，进入，设置【接待人员】；
						</br>【<red>企业微信客服点击没反应？</red>】：开发工具--右上角--详情--本地设置--调试基础库2.19版本以上；真机体验：域名必须支持配置HTTPS。
						','options'=>'types'),
						array('type'=>'string','title'=>'客服号码','name'=>'number','help'=>'QQ客服填qq号码，移动客服填手机号，坐班客服填座机号，4，微信客服：采用微信官方聊天，5、小程序客服：采用小程序官方聊天(必须先设置对接好,小程序账号后台手动添加好：客服反馈--添加客服)；6、支付宝客服：采用支付宝官方聊天','show'=>array('type'=>array(1,2,3))),
						array('type'=>'choose_title','title'=>'客服ID','name'=>'mid','action'=>'core/member.get_member/','choose_title'=>'选择会员','help'=>'网页客服:内置聊天窗口，内容填系统会员ID','show'=>array('type'=>0)),
						array('type'=>'string','title'=>'公众号微信号','name'=>'mpname' , 'help'=>'填写要微信公众号:微信号（不是个人的，是公众号的）:例如：mpname；改微信公众号必须开启了--客服功能插件（微信公众号官网后台--添加功能插件）','show'=>array('type',array(4,5))),
						array('type'=>'select','title'=>'绑定小程序','name'=>'wxappid' , 'help'=>'绑定的小程序，请确定该小程序已经对接！','options'=>'wxapps','show'=>array('type',array(4,5))),
						array('type'=>'string','title'=>'企业微信客服（网页版）','name'=>'worker.h5url' , 'help'=>'教程：https://work.weixin.qq.com/nl/act/p/3f8820e724cb44c5','show'=>array('type'=>8)),
						array('type'=>'string','title'=>'企业微信客服（小程序版企业ID）','name'=>'worker.corpId' , 'help'=>'教程：https://work.weixin.qq.com/nl/act/p/a733314375294bdd','show'=>array('type'=>8)),
						array('type'=>'string','title'=>'企业微信客服（小程序版客服链接）','name'=>'worker.appurl' , 'help'=>'教程（如果企业微信--应用管理--应用，里面没有《微信客服》，需要先到https://work.weixin.qq.com/kf开通）：https://work.weixin.qq.com/nl/act/p/a733314375294bdd','show'=>array('type'=>8)),
						array('type'=>'image','title'=>'顾问客服二维码','name'=>'guwenkfewm','help'=>'开通教程：微信公众号后台--添加功能插件--对话能力--创建顾问--下载二维码;</br>顾问后台进入方法：搜索小程序“服务号小助手”','show'=>array('type'=>9)),
						array('type'=>'switch','title'=>'是否前端管理员','name'=>'isadmin' , 'help'=>'','show'=>array('type <>'=>7)),
						array('type'=>'switch','title'=>'是否客服微信二维码','name'=>'showkfqr' , 'help'=>''),
						array('type'=>'image','title'=>'客服微信二维码','name'=>'kefuqr' , 'help'=>'','show'=>array('showkfqr'=>1)),
						array('type'=>'switch','title'=>'是否前端显示','name'=>'isshow','help'=>'' ),
						array('type'=>'string','title'=>'排序','name'=>'paixu' , 'help'=>''),
						)
			),
			'1'=>array(
					'title'=>'消息设置',
					'list'=>array(
						array('type'=>'text','title'=>'客服欢迎语','name'=>'welcometext', 'help'=>'<red>[温馨提示]：时隔3小时以上才会触发，并不是每次进入对话就会弹出！</red>' ),
						array('type'=>'text','title'=>'粉丝快捷消息','name'=>'fansauto', 'help'=>'一行一条快捷语句！' ),
						array('type'=>'text','title'=>'客服快捷消息','name'=>'kefuauto','help'=>'一行一条快捷语句！' ),
						array('type'=>'radio','title'=>'快捷消息提交设置','name'=>'autoset','help'=>'','options'=>'autosets'),
					)
			),
			'2'=>array(
					'title'=>'在线时间设置',
					'list'=>array(
						array('type'=>'time_hour','title'=>'客服在线时间','name'=>'onlinetime', 'help'=>'','show'=>array('type <>'=>7)),
						array('type'=>'text','title'=>'不在线提示语','name'=>'offlinetext', 'help'=>'','show'=>array('type <>'=>7)),
						array('type'=>'switch','title'=>'启用手动在线下线','name'=>'isonline','help'=>'','show'=>array('type <>'=>7)),
					)
			),
		)
	);
	$return['htmls']=$htmls;
	exi($return);
}
if($_RQ['op']=='post'){
	$post=get_postdata();
	$data=array(
		'nickname'=>trim($post['nickname']),
		'name'=>trim($post['name']),
		'picurl'=>trim($post['picurl']),
		'groupid'=>intval($post['groupid']),
		'type'=>intval($post['type']),
		'mpname'=>trim($post['mpname']),
		'number'=>trim($post['number']),
		'isadmin'=>intval($post['isadmin']),
		'showkfqr'=>trim($post['showkfqr']),
		'kefuqr'=>trim($post['kefuqr']),
		'paixu'=>intval($post['paixu']),
		'welcometext'=>trim($post['welcometext']),
		'fansauto'=>trim($post['fansauto']),
		'kefuauto'=>trim($post['kefuauto']),
		'autoset'=>intval($post['autoset']),
		'onlinetime'=>ijson_encode($post['onlinetime']),
		'offlinetext'=>trim($post['offlinetext']),
		'isonline'=>intval($post['isonline']),
		'isshow'=>intval($post['isshow']),
		'wxappid'=>intval($post['wxappid']),
		'mid'=>intval($post['mid']),
		'wxappkefuid'=>trim($post['wxappkefuid']),
		'guwenkfewm'=>trim($post['guwenkfewm']),
		'worker'=>ijson_encode($post['worker']),
	);
	$id=intval($post['id']);
	$keyid=intval($post['keyid']);
	$type=intval($post['type']);
	$qrticket=$post['qrticket'];
	$kf_account=trim($post['name']).'@'.trim($post['mpname']);
	if($type == 4 || $type == 5){
		$backdata=array(
				'title'=>'全网客服-'.$_SESSION['uniacid'],
				'backtype'=>8,
				'event'=>'wechat',
				'action'=>'wechat',
				'status'=>1,
				'keyword'=>'客服:'.trim($post['name']).'@'.$_SESSION['uniacid'],
				'key'=>$_SESSION['uniacid'].'name'.$post['name'],
		);
		if(empty($keyid)){
			$keyid = cfc('core')->save_back($backdata,'jy_kefu');
			$data['keyid']=$keyid;
		}
		if(empty($qrticket)){
			$title = '全网客服-客服：'.$post['name'].'de二维码';
			$getqrdata=array(
				'keyid'=>$keyid,
				'scantype'=>'kefu',
				'kf_account'=>$kf_account
			);
			$getqrdata = ijson_encode($getqrdata);
			$qr = cfc('account')->get_qr(2,'jy_kefu',$getqrdata,30,$title,'jy_kefu'.$keyid);	
			$data['qrticket']=$qr['ticket'];
		}
	}
	if(empty($post['name'])){
		exi('请填写客服账号！','error');
	}
	$nickname=trim($post['nickname']);
	if($id){
		if($type == 4 || $type == 5){
			$content = cfc('kefu')->upkefuinfo($kf_account,$nickname);
			if($content['errcode'] == 65401){
				cfc('kefu')->setkefu($kf_account,$nickname);
			}elseif($content['errcode'] != 0){
				exi(cfc('kefu')->error_code($content['errcode']),'error');
			}
		}
		pdo_update('jy_kefus',$data,array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
	}else{
		if($type == 4 || $type == 5){
			cfc('kefu')->setkefu($kf_account,$nickname);
		}
		if(pdo_getcolumn('jy_kefus',array('name' => $post['name'],'uniacid'=>$_SESSION['uniacid']),'id')){
			exi('非常抱歉，此账号已被使用，你需要更换客服账号！','error');
		}
		$data['uniacid']=$_SESSION['uniacid'];
		$data['plugin']='jy_merch';
		$data['pid']=$merchid;
		pdo_insert('jy_kefus',$data);
	}
	
	exi('保存成功！','','list');
}
if($_RQ['op']=='inviteworker'){
	$id=intval($_RQ['id']);
	if($id){
		$item=pdo_get('jy_kefus',array('uniacid'=>$_SESSION['uniacid'],'id'=>$id));
	}else{
		exi('请先选择客服!','','error');
	}
	$return['item']=$item;
	$htmls=array(
		'type'=>'edit',
		'post'=>'invitepost',
		'desc'=>'绑定客服',
		'edit'=>array(
				array('type'=>'string','title'=>'客服微信号','name'=>'wechatname', 'help'=>'这里填写个人的微信号'),
		)
	);
	$return['htmls']=$htmls;
	exi($return);
}
if($_RQ['op']=='invitewxapp'){
	$id=intval($_RQ['id']);
	if($id){
		$item=pdo_get('jy_kefus',array('uniacid'=>$_SESSION['uniacid'],'id'=>$id));
	}else{
		exi('请先选择客服!','','error');
	}
	$return['item']=$item;
	$htmls=array(
		'type'=>'look',
		'desc'=>'绑定小程序客服',
		'look'=>array(
				array('type'=>'help','title'=>'1、进入微信小程序后台', 'help'=>'跟登陆微信公众号差不多：微信公众号官网：https://mp.weixin.qq.com/cgi-bin/loginpage?t=wxm2-login&lang=zh_CN'),
				array('type'=>'help','title'=>'2、添加客服', 'help'=>'操作路径--客服反馈--添加客服'),
		)
	);
	$return['htmls']=$htmls;
	exi($return);
}
if($_RQ['op']=='invitepost'){
	$post=get_postdata();
	$data=array(
		'wechatname'=>trim($post['wechatname']),
	);
	$id=intval($post['id']);
	if($id){
		pdo_update('jy_kefus',$data,array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
	}
	$item = pdo_get('jy_kefus',array('uniacid'=>$_SESSION['uniacid'],'id'=>$id));
	$kf_account=$item['name'].'@'.$item['mpname'];
	$invite_wx=trim($post['wechatname']);
	cfc('kefu')->inviteworker($kf_account,$invite_wx);
	exi('提交成功！');
}
if($_RQ['op']=='set'){
	$id=intval($_RQ['id']);
	if(!$id){
		exi('参数错误！','error');
	}
	$update=array();
	$post=get_postdata();
	if(isset($post['isshow'])){
		$update['isshow']=intval($post['isshow']);
	}
	if($update){
		pdo_update('jy_kefus',$update,array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
	}
	exi('操作成功！');
}
if($_RQ['op']=='loginmpkf'){
	$return['linkurl']= (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== off || $_SERVER['SERVER_PORT'] == 443) ? 'https://mpkf.weixin.qq.com' : 'http://mpkf.weixin.qq.com';
	exi($return);
}
if($_RQ['op']=='del'){
	//删除小程序
	$id=intval($_RQ['id']);
	$type=pdo_getcolumn('jy_kefus',array('uniacid'=>$_SESSION['uniacid'],'id'=>$id),'type');
	if($type == 4 || $type == 5){
		cfc('kefu')->delkefu($kf_account);
	}
	if($id){
		pdo_delete('jy_kefus',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
	}
	$del=trim($_RQ['del'],';');
	if($del){
		$del=explode(';',$del);
		foreach($del as $id){
			$id=intval($id);
			if($id){
				pdo_delete('jy_kefus',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
			}
		}
	}
	exi('删除成功！');
}
?>